package com.molichuxing.services.business.service;

import java.util.List;
import java.util.Map;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.services.business.dto.request.create.CommercialInsuranceCreateBizDto;
import com.molichuxing.services.business.dto.request.create.CompulsoryInsuranceCreateBizDto;
import com.molichuxing.services.business.dto.request.modify.CarCommercialInsuranceModifyDto;
import com.molichuxing.services.business.dto.request.modify.CarCompulsoryInsuranceModifyDto;
import com.molichuxing.services.business.dto.response.CarInsuranceCommercialDto;
import com.molichuxing.services.business.dto.response.CarInsuranceDetailDto;
import com.molichuxing.services.business.dto.response.CarInsuranceDto;
import com.molichuxing.services.property.CarInsuranceTypeEnum;

/**
 * 保险信息服务类
 * @author xuelin yi
 */
public interface CarInsuranceBizService {

    /**
     * 根据条件分页查询交强险信息
     * type 保险类别：1-交强险，2-商业险
     * code 保单号
     * licencePlate 车牌
     * vin 车架号
     * insuranceCompanyId 保险公司ID
     * insureStartTime 投保开始时间
     * insureEndTime 投保结束时间
     * beginStartTime 起保开始时间
     * beginEndTime 起保结束时间
     * endStartTime 终保开始时间
     * endEndTime 终保结束时间
     * @param mapParam
     * @param pageNum
     * @param pageSize
     * @return
     */
    public Paged<CarInsuranceDto> getInsurancePage(Map<String, Object> mapParam, Integer pageNum, Integer pageSize);

    /**
     * 根据车辆id查询保险信息
     * @param vehicleId
     * @param carInsuranceTypeEnum
     * @return
     */
    public List<CarInsuranceDto> getInsuranceList(Integer vehicleId, CarInsuranceTypeEnum carInsuranceTypeEnum);

    /**
     * 根据车辆id查询商业险保险信息
     * @param vehicleId
     * @return
     */
    public List<CarInsuranceCommercialDto> getInsuranceCommercialList(Integer vehicleId);


    /**
     * 根据保险ID查询保险信息
     * @param insuranceId
     * @return
     */
    public CarInsuranceDetailDto getInsuranceById(int insuranceId);

    /**
     * 根据交强险ID修改交强险信息
     * @param modifyDto
     * @return
     */
    public Boolean modifyCompulsoryInsurance(CarCompulsoryInsuranceModifyDto modifyDto) throws Exception;

    /**
     * 根据商业险ID修改商业险信息
     * @param modifyDto
     * @return
     */
    public Boolean modifyCommercialInsurance(CarCommercialInsuranceModifyDto modifyDto) throws Exception;

    /**
     * 新增交强险信息
     * @param createBizDto
     * @return
     */
    public Boolean createCompulsoryInsurance(CompulsoryInsuranceCreateBizDto createBizDto);

    /**
     * 新增商业险信息
     * @param createBizDto
     * @return
     */
    public Boolean createCommercialInsurance(CommercialInsuranceCreateBizDto createBizDto);

	/**
	 * 车辆保险导出count
	 * 
	 * @param selectParams
	 * @return
	 */
	public Long getDownloadInsuranceCount(Map<String, Object> selectParams);

	/**
	 * 车辆保险导出
	 * 
	 * @param mapParam
	 * @return
	 */
	public List<CarInsuranceDto> getDownloadInsuranceList(Map<String, Object> mapParam);
}
